<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    //61、已知“var obj = { a：“Hello” }；”于是“obj && obj.a；”的结果是？
    //A、true
    //B、null
    //C、'Hello'
    //D、false
    //结果是: C

    // 62、下面关于逻辑运算符的描述错误的是？
    // A、!总是返回true或者false
    // B、!!10与10是一样的
    // C、|| 运算符会先计算左边的表达式，如果结果为false, 那么再计算右侧的表达式，并返回右侧表达式的计算结果
    // D、语句'if(a==b) stop()'与语句‘(a == b) && stop();’表达含义一致
    //结果是: B

    //63、有关for循环语句说法错误的是？
    //A、for循环中三个表达式中的任何一个都可以忽略，但是两个分号是必不可少的
    //B、for循环语句的初始化部分仅在循环开始之前执行一次
    //C、for循环变量必须是数字类型
    //D、for循环语句中的三部分(初始化部分、测试部分和更新部分)都是可选的
    //结果是: C

    //64、有关if语句说法不正确的是？
    //A、if后面的条件必须使用括号包围
    //B、有的if语句可以没有else部分
    //C、if语句也支持嵌套
    //D、else中语句的执行总是会匹配最外层的那个if语句中的条件判断
    //结果是: D

    //65、有关switch语句的结论错误的是？
    //A、两个case不可共同使用一个break语句
    //B、对每个case的匹配操作实际上是'==='恒等运算符比较，因此，表达式和case的匹配并不会做任何数据类型转换
    //C、ECMAScript标准的确允许每个case关键字更随任意的表达式
    //D、如果在函数中使用switch语句，有时可以使用return来代替break
    //结果是: D

    //66、有关JS函数不正确的结论有？
    //A、定义函数时声明了多个参数，但调用时可以不使用它们
    //B、函数体是由JavaScript语句组成的，必须使用花括号括起来，即使函数体不包含任何语句
    //C、子函数可以在父函数外而正常访问
    //D、定义函数时，并不执行函数体内的语句，调用的时候才会执行
    //结果是: A

    //67、有关var语句的错误结论的是？
    //A、var 声明的变量有时可以通过delete删除
    //B、如果在顶层代码中使用var语句，它声明的是全局变量
    //C、如果var语句出现在函数体内，那么它定义的是一个全局变量
    //D、var 和function都是声明语句，用于声明或者定义变量或者函数
    //结果是: D

    //68、有关JS变量说法错误的是？
    //A、if语句里声明的变量会被预解析
    //B、使用var 多次声明同一个变量没有问题
    //C、JS变量一旦定义就无法重新定义
    //D、const声明的变量是不能修改的
    //结果是: C

    //69、有关in运算符错误的结论是？
    //A、for...in运算符不可用于数组元素的遍历
    //B、in运算符用来判断对象是否存在指定名称的属性
    //C、如果in运算符右侧的对象拥有一个名为左操作数的属性名，那么表达式返回true, 否则，返回false
    //D、in运算符也可以用在数组身上
    //结果是:  A

    //70、关于JS赋值操作符描述错误的是？
    //A、赋值操作符的顺序是从左至右
    //B、"i=j=k="Hello kaivon!";"的含义是把三个变量都初始化为"Hello kaivon!"
    //C、赋值表达式的顺序是从右往左
    //D、赋值表达式的值就是右操作数的值
    //结果是:

    //71、以下正确的选项是？
    //A、“one”< 3结果为true
    //B、"111" < 3结果为true
    //C、"100" + 200的结果是300
    //D、加号运算符的一侧为字符串的话，会把两个数据都转成字符串
    //结果是: D

    //72、下列说法正确的是？（多选）
    // A、直接调用Math.max时它并不接受数组
    // B、对于一些系统内置对象，使用toString调用不会得到你想要的源码
    // C、函数的length属性返回函数中的形参个数
    // D、arguments对象用于描述传递给一个函数的参数数组，是一个类数组本身
    //结果是:  A C D

    //73、下面正确的是？（多选）
    // A、‘111’< '33'的比较结果为true
    // B、1 >= Infinity的结果为true
    // C、'100' + 200表达式中200会被转成数字，结果为300
    // D、‘100’+‘200’的表达式结果为‘100200’
    //结果是: A

    //74、关于JS函数的说法错误的是？
    // A、函数可以通过定时器去调用
    // B、自执行的函数可以形成一个独立作用域
    // C、delete可以删除全局函数
    // D、如果函数无明确的返回值，或调用了没有参数的return语句，那么它真正返回的值是undefined
    //结果是:  C

    //75、有关this运算符正确的是（多选）？
    // A、this对象不能用于箭头函数中
    // B、apply和call能够强制改变函数执行时的当前对象，让this指向其它对象
    // C、由于JS的动态性，this的指向在运行时才确定
    // D、this运算符总是指向当前的对象
    //结果是: B

    //76、有关跳转语句的说法正确的是？
    // A、switch中，case语句如果没有break, 它会继续执行下一个case语句
    // B、break是跳出当前次循环，containue是跳出整个循环
    // C、break语句可以阻止函数继续运行
    // D、在for...in中不能使用break
    //结果是:  D

    //77、下面有关循环语句正确的结论是？（多选）
    // A、for...in循环可以像枚举对象属性一样枚举数组索引
    // B、for...in语句是for循环语句完全相同，它循环的范围是一个对象的所有属性或是一个数组的所有元素
    // C、for循环的循环变量未必都是数字
    // D、for循环语句中的所有三部分（初始化语句，条件语句和变化语句）都是可选的
    //结果是: A

    //77、下面有关循环语句正确的结论是？（多选）
    // A、for...in循环可以像枚举对象属性一样枚举数组索引
    // B、for...in语句是for循环语句完全相同，它循环的范围是一个对象的所有属性或是一个数组的所有元素
    // C、for循环的循环变量未必都是数字
    // D、for循环语句中的所有三部分（初始化语句，条件语句和变化语句）都是可选的
    //结果是: A B

    //79、下面说法错误的是？
    // A、CommonJS模块规范可以和AMD规范都是针对服务端制定的规范
    // B、字符串属于原始数据 类型
    // C、任意JS值都可以转换为布尔值
    // D、null和undefined没有包装对象，如果访问它们的属性，会引发一个类型错误
    //结果是: C

    //80、下面说法错误的是？
    // A、在ECMAScript中，‘+’既是二元加法运算符，又是一元数字运算符，还能够把两个字符串连接起来
    // B、JavaScript运算符通常会根据需要对操作数进行类型转换
    // C、在JS中，for/in循环只能遍历对象的所有属性
    // D、字符串可以当作只读数组，使用方括号 + 下标的形式来访问单个字符
    //结果是: A

    //81、关于append与appendChild的区别，下面说法错误的是？
    // A、append方法可以添加文本节点，比如append('杨戬')，appendChild方法不行
    // B、append方法是jqery的，appendChild方法是原生的
    // C、append方法可以同时插入一个节点以及一个文本，appendChild()只能添加一个
    // D、append方法没有返回值，appendChild会返回添加的那个节点
    //结果是: B

    //82、以下代码运行后，在控制台里输出的内容为？
    // function output(a) {
    //     console.log(a);//Hello World! 和 undefined
    // }
    // output(typeof function () {
    //     output('Hello World!')
    // }())

    //83、以下代码运行后，在控制台里输出的内容为？
    //解析:
    //首先
    //闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中，
    //只有函数内部的子函数才能读取局部变量，因此可以把闭包简单
    //理解成“定义在一个函数内部的函数”。

    //由此可见 test中的n以及它的值一直存放在内存中。
    //为什么会这样呢？原因就在于test是add的父函数，而add被赋给了一个
    //全局变量，这导致add始终在内存中，而add的存在依赖于test，因此test也
    //始终在内存中，不会在调用结束后，被垃圾回收机制回收。
    // function test() {
    //     var n = 1573;
    //     function add() {
    //         n++;
    //         console.log(n);// 1574 1575 1574
    //     }
    //     return { n: n, add: add }
    // }
    // var result = test();
    // var result2 = test();
    // result.add();
    // result.add();
    // console.log(result.n);//1573
    // result2.add();

    //84、以下代码运行后，在控制台里输出的内容为？
    //解析:
    //b最开始是undefined，所以我认为undefined ++ ，肯定报错，
    //结果不是，undefined ++ 是 b = NaN，b再等于3，所以输出3
    // var b = 1;
    // function outer() {
    //     var b = 2;
    //     function inner() {
    //         b++;
    //         var b = 3;
    //         console.log(b);
    //     }
    //     inner();
    // }
    // outer();

    //85、关于new操作符的描述错误的是？
    // A、new第一步是创建一个空对象，并且把this指向该对象
    // B、new会返回创建的这个对象
    // C、new不能够调用函数
    // D、new 可以用来生成一个实例
    //结果是: C

    // 86、关于post与get的区别描述错误的是？
    // A、GET会将数据拼接到url地址中，POST会把数据放到请求头里
    // B、GET传递的数量要比POST的小
    // C、GET可以跨域，POST不能跨域
    // D、GET历史参数保留在浏览器历史中，POST参数不会保存在浏览器历史中
    //结果是: A

    // 87、有关各逻辑运算符错误的结论有？
    // A、JS逻辑与运算符‘&&’会在左右两边的表达式结果都为真的时候才返回右边表达式的值
    // B、JS逻辑与运算符'&&'不可能出现不会计算右操作数的情形
    // C、JS逻辑或运算符‘||’可能出现不会计算右操作数的情形
    // D、JS逻辑与运算符‘&&’可能出现不会计算右操作数的情形
    //结果是: B

    //88、在下列选项中选出程序的打印输出结果：
    // var settings = {
    //     username: 'alan',
    //     level: 19,
    //     health: 90
    // }
    // var data = JSON.stringify(settings, ['level', 'health']);
    // console.log(data); //{"level":19,"health":90}
    // A、"{"level":19,"health":90}"
    // B、"{"username":"alan"}"
    // C、"["level","health"]"
    // D、"{"username":"alan","level":19,"health":90}"
    //结果是: A

    //89、下列打印的输出结果是？
    // function Dog(name) {
    //     this.name = name
    // }
    // Dog.prototype.bark = function () {
    //     console.log(`Woof I am ${this.name}`)
    // }
    // const pet = new Dog('Mara');
    // pet.bark();
    // delete Dog.prototype.bark;
    // pet.bark();
    // A、‘Woof I am Mara’ , TypeError
    // B、'Woof I am Mara', 'Woof I am Mara'
    // C、'Woof I am Mara', undefined
    // D、TypeError, TypeError
    //结果是: A

    //90、选出程序执行的打印结果：
    // function greeting() {
    //     throw "Hello world!";
    // }
    // function sayHi() {
    //     try {
    //         const data = greeting();
    //         console.log('It worked!', data)
    //     } catch (e) {
    //         console.log("Oh no error:", e);
    //     }
    // }
    // sayHi();
    // A、"It worked! Hello world!"
    // B、"Oh no an error: undefined"
    // C、SyntaxError:can only throw Error objects
    // D、"Oh no an error:Hello world!"
    //结果是: D

    //91、选择程序的输出结果：
    // function getInfo(member, year) {
    //     member.name = 'Lydia';
    //     year = '1998'
    // }
    // const person = {
    //     name: 'Alan'
    // }
    // const birthYear = '1997';
    // getInfo(person, birthYear);
    // console.log(person, birthYear)//{name: 'Lydia'} '1997'
    // A、{ name: 'Lydia' }, '1997'
    // B、{ name: 'Sarah' }, '1998'
    // C、{ name: 'Lydia' }, '1998'
    // D、{ name: 'Sarah' }, '1997'
    //结果是: A

    //92、从下列选项中选出输出结果：
    // const newArr = [1, 2, 3].map(n => {
    //     if (typeof n === 'number') return;
    //     return n * 2;
    // })
    // A、[]
    // B、[null, null, null]
    // C、[undefined, undefined, undefined]
    // D、[3 x empty]
    //结果是: A

    //93、说出下面的打印值：
    // const firstPromise = new Promise((res, rej) => {
    //     setTimeout(res, 500, 'one')
    // });
    // const secondPromise = new Promise((res, rej) => {
    //     setTimeout(res, 100, 'two')
    // });
    // Promise.race([firstPromise, secondPromise]).then(res => {
    //     console.log(res) //two
    // })
    // A、one
    // B、two
    // C、two，one
    // D、one, two
    //结果是: B

    //94、说出下面的输出结果：
    // function sayHi() {
    //     console.log(name);
    //     console.log(age);
    //     var name = 'Lydia';
    //     let age = 21;
    // }
    // A、Lydia 和undefined
    // B、Lydia 和ReferenceError
    // C、ReferenceError和21
    // D、undefinede和undefined
    //结果是: D

    //95、选择代码执行后的打印结果：
    // for (var i = 0; i < 3; i++) {
    //     setTimeout(() => {
    //         console.log(i);
    //     }, 1)
    // }
    // for (let i = 0; i < 3; i++) {
    //     setTimeout(() => {
    //         console.log(i);
    //     }, 1)
    // }
    // A、0，1，2和0，1，2
    // B、0，1，2和3，3，3
    // C、3，3，3和0，1，2
    //结果是: C

    //96、说出函数执行后的调用结果：
    // const shape = {
    //     radius: 10,
    //     diameter() {
    //         return this.radius * 2
    //     },
    //     perimeter: () => 2 * Math.PI * this.radius
    // }
    // console.log(shape.diameter());//20
    // console.log(shape.perimeter());//NaN
    // - A、20and 62.83185307179586
    //- B、20和NaN
    //- C、20和63
    //- D、NaN和63
    //结果是: B

    //97、下列选项中哪一个描述是正确的：
    // const bird = {
    //     size: 'small'
    // }
    // const mouse = {
    //     name: 'Micky',
    //     small: true
    // }
    // console.log(mouse[bird.size]);
    // console.log(mouse[bird['size']]);
    // A、mouse.bird.size是无效的
    // B、mouse[bird.size]是无效的
    // C、mouse[bird['size']]是无效的
    // D、以上三个选项都是有效的
    //结果是: B C

    //98、说出打印值的输出结果：
    // async function getData() {
    //     return await Promise.resolve("I made it!");
    // }
    // const data = getData();
    // console.log(data);
    // A、'I made it!'
    // B、Promise {: 'I made It!' }
    // C、Promise{ }
    // D、undefined
    //结果是: C

    //99、说出下面构造函数的输出结果：
    // class Chameleon {
    //     static colorChange(newColor) {
    //         this.newColor = newColor;
    //         return this.newColor;
    //     }
    //     constructor({ newColor = 'green' } = {}) {
    //         this.newColor = newColor;
    //     }
    // }
    // const freddie = new Chameleon({
    //     newColor: 'purple'
    // })
    // freddie.colorChange('orange')
    // A、orange
    // B、purple
    // C、green
    // D、TypeError
    //结果是: D

    //100、说出下面的打印输出结果：
    // function Person(firstName, lastName) {
    //     this.firstName = firstName;
    //     this.lastName = lastName;
    // }
    // const lydia = new Person('Lydia', 'Hallie');
    // const sarch = Person('Sarch', 'Smith');
    // console.log(lydia);
    // console.log(sarch);
    // A、Pseron { fistName: 'Lydia', lastName: 'Hallie' } and undefined
    // B、Person { firstName: 'Lydia', lastName: 'Hallie' } and Person { firstName: 'Sarah', lastName: 'Smith' }
    // C、Person { firstName: 'Lydia', lastName: 'Hallie' } and { }
    // D、Person { firstName: 'Lydia', lastName: 'Hellie' } and ReferenceError
    //结果是: A
</script>

</html>